﻿Imports System.Data.SqlClient
Public Class Usuarios

    Private Const connectionString As String = "Data Source=JOSEMIGUEL-PC;Initial Catalog=Banco;Integrated Security=True"

    Function Listar() As List(Of Banco.BE.Usuarios)
        Dim lista As New List(Of Banco.BE.Usuarios)
        Dim connection As New SqlClient.SqlConnection()

        connection.ConnectionString = connectionString
        Dim comando As New SqlClient.SqlCommand
        Dim lector As SqlClient.SqlDataReader


        Try
            connection.Open()
            comando.Connection = connection
            comando.CommandText = "UsuariosListar"
            comando.CommandType = CommandType.StoredProcedure
            comando.Connection = connection

            lector = comando.ExecuteReader()

            If lector.HasRows() Then
                Do While lector.Read()

                    Dim usuario As New Banco.BE.Usuarios
                    usuario.Id = CInt(lector.GetValue(0))
                    usuario.NombreCompleto = lector.GetValue(1).ToString
                    usuario.Identificacion = lector.GetValue(2).ToString
                    usuario.NombreUsuario = lector.GetValue(3).ToString
                    usuario.Contraseña = lector.GetValue(4).ToString
                    usuario.Perfil = CInt(lector.GetValue(5))
                    usuario.Estado = CInt(lector.GetValue(6))
                    usuario.FechaCreacion = CDate(lector.GetValue(7))
                    lista.Add(usuario)


                Loop
            End If
            lector.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al listar" & ex.ToString)
        Finally
            If connection.State <> ConnectionState.Closed Then
                connection.Close()
            End If
        End Try

        Return lista
    End Function

    Sub Agregar(ByVal mantenimiento As Banco.BE.Usuarios)
        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()

        Try
            sqlConnection.ConnectionString = connectionString


            sqlCommand.Parameters.Add(New SqlParameter("NombreCompleto", mantenimiento.NombreCompleto))
            sqlCommand.Parameters.Add(New SqlParameter("Identificacion", mantenimiento.Identificacion))
            sqlCommand.Parameters.Add(New SqlParameter("NombreUsuario", mantenimiento.NombreUsuario))
            sqlCommand.Parameters.Add(New SqlParameter("Contraseña", mantenimiento.Contraseña))
            sqlCommand.Parameters.Add(New SqlParameter("Perfil", mantenimiento.Perfil))
            sqlCommand.Parameters.Add(New SqlParameter("Estado", mantenimiento.Estado))
            'sqlCommand.Parameters.Add(New SqlParameter("FechaCreacion", mantenimiento.FechaCreacion))
            sqlConnection.Open()

            sqlCommand.CommandText = "UsuariosAgregar"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection
            sqlCommand.ExecuteNonQuery()
            sqlConnection.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al Insertar en la Bd" & Ex.ToString)
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try

    End Sub

    Function Obtener(ByVal id As Integer) As Banco.BE.Usuarios
        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim resultado As Banco.BE.Usuarios = Nothing

        Try
            sqlConnection.ConnectionString = connectionString

            sqlConnection.Open()

            sqlCommand.CommandText = "UsuariosObtener"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection

            sqlCommand.Parameters.Add(New SqlParameter("Id", id))

            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then
                Do While myReader.Read()
                    resultado = New Banco.BE.Usuarios
                    resultado.Id = CInt(myReader.GetValue(0))
                    resultado.NombreCompleto = myReader.GetValue(1).ToString
                    resultado.Identificacion = myReader.GetValue(2).ToString
                    resultado.NombreUsuario = myReader.GetValue(3).ToString
                    resultado.Contraseña = myReader.GetValue(4).ToString
                    resultado.Perfil = CInt(myReader.GetValue(5))
                    resultado.Estado = CInt(myReader.GetValue(6))
                    resultado.FechaCreacion = CDate(myReader.GetValue(7))

                Loop

            End If

            myReader.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al Obtener" & Ex.ToString)
        Finally

            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try


        Return resultado
    End Function

    Function Editar(ByVal mantenimiento As Banco.BE.Usuarios) As Boolean
        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()

        Try
            sqlConnection.ConnectionString = connectionString


            sqlCommand.Parameters.Add(New SqlParameter("NombreCompleto", mantenimiento.NombreCompleto))
            sqlCommand.Parameters.Add(New SqlParameter("Identificacion", mantenimiento.Identificacion))
            sqlCommand.Parameters.Add(New SqlParameter("NombreUsuario", mantenimiento.NombreUsuario))
            sqlCommand.Parameters.Add(New SqlParameter("Contraseña", mantenimiento.Contraseña))
            sqlCommand.Parameters.Add(New SqlParameter("Perfil", mantenimiento.Perfil))
            sqlCommand.Parameters.Add(New SqlParameter("Estado", mantenimiento.Estado))
            sqlCommand.Parameters.Add(New SqlParameter("FechaCreacion", mantenimiento.FechaCreacion))
            sqlCommand.Parameters.Add(New SqlParameter("Id", mantenimiento.Id))

            sqlConnection.Open()

            sqlCommand.CommandText = "UsuariosEditar"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection
            sqlCommand.ExecuteNonQuery()
            sqlConnection.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al Editar en la Bd" & Ex.ToString)
            Return False
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try

        Return True
    End Function

    Function EditarEstado(ByVal mantenimiento As Banco.BE.Usuarios) As Boolean
        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()

        Try
            sqlConnection.ConnectionString = connectionString

            sqlCommand.Parameters.Add(New SqlParameter("Id", mantenimiento.Id))
            sqlCommand.Parameters.Add(New SqlParameter("NombreCompleto", mantenimiento.NombreCompleto))
            sqlCommand.Parameters.Add(New SqlParameter("NombreUsuario", mantenimiento.NombreUsuario))
            sqlCommand.Parameters.Add(New SqlParameter("Identificacion", mantenimiento.Identificacion))
            sqlCommand.Parameters.Add(New SqlParameter("Contraseña", mantenimiento.Contraseña))
            sqlCommand.Parameters.Add(New SqlParameter("Perfil", mantenimiento.Perfil))
            sqlCommand.Parameters.Add(New SqlParameter("Estado", mantenimiento.Estado))
            sqlCommand.Parameters.Add(New SqlParameter("FechaCreacion", mantenimiento.FechaCreacion))

            sqlConnection.Open()

            sqlCommand.CommandText = "EditarEstado"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection
            sqlCommand.ExecuteNonQuery()
            sqlConnection.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al Editar en la Bd" & Ex.ToString)
            Return False
        Finally
            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try

        Return True
    End Function

    Function Activos() As List(Of Banco.BE.Usuarios)
        Dim lista As New List(Of Banco.BE.Usuarios)
        Dim connection As New SqlClient.SqlConnection()

        connection.ConnectionString = connectionString
        Dim comando As New SqlClient.SqlCommand
        Dim lector As SqlClient.SqlDataReader


        Try
            connection.Open()
            comando.Connection = connection
            comando.CommandText = "UsuariosActivos"
            comando.CommandType = CommandType.StoredProcedure
            comando.Connection = connection

            lector = comando.ExecuteReader()

            If lector.HasRows() Then
                Do While lector.Read()

                    Dim usuario As New Banco.BE.Usuarios
                    usuario.Id = CInt(lector.GetValue(0))
                    usuario.NombreCompleto = lector.GetValue(1).ToString
                    usuario.Identificacion = lector.GetValue(2).ToString
                    usuario.NombreUsuario = lector.GetValue(3).ToString
                    usuario.Contraseña = lector.GetValue(4).ToString
                    usuario.Perfil = CInt(lector.GetValue(5))
                    usuario.Estado = CInt(lector.GetValue(6))
                    usuario.FechaCreacion = CDate(lector.GetValue(7))
                    lista.Add(usuario)


                Loop
            End If
            lector.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al listar" & ex.ToString)
        Finally
            If connection.State <> ConnectionState.Closed Then
                connection.Close()
            End If
        End Try

        Return lista
    End Function

    Function Inactivos() As List(Of Banco.BE.Usuarios)
        Dim lista As New List(Of Banco.BE.Usuarios)
        Dim connection As New SqlClient.SqlConnection()

        connection.ConnectionString = connectionString
        Dim comando As New SqlClient.SqlCommand
        Dim lector As SqlClient.SqlDataReader


        Try
            connection.Open()
            comando.Connection = connection
            comando.CommandText = "UsuariosInactivos"
            comando.CommandType = CommandType.StoredProcedure
            comando.Connection = connection

            lector = comando.ExecuteReader()

            If lector.HasRows() Then
                Do While lector.Read()

                    Dim usuario As New Banco.BE.Usuarios
                    usuario.Id = CInt(lector.GetValue(0))
                    usuario.NombreCompleto = lector.GetValue(1).ToString
                    usuario.Identificacion = lector.GetValue(2).ToString
                    usuario.NombreUsuario = lector.GetValue(3).ToString
                    usuario.Contraseña = lector.GetValue(4).ToString
                    usuario.Perfil = CInt(lector.GetValue(5))
                    usuario.Estado = CInt(lector.GetValue(6))
                    usuario.FechaCreacion = CDate(lector.GetValue(7))
                    lista.Add(usuario)


                Loop
            End If
            lector.Close()

        Catch ex As Exception
            Throw New Exception("Problemas al listar" & ex.ToString)
        Finally
            If connection.State <> ConnectionState.Closed Then
                connection.Close()
            End If
        End Try

        Return lista
    End Function

    Function Filtrar(ByVal mantenimiento As Banco.BE.Usuarios) As List(Of Banco.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim lista As New List(Of Banco.BE.Usuarios)

        Try
            sqlConnection.ConnectionString = connectionString

            sqlConnection.Open()

            sqlCommand.CommandText = "UsuariosIdentificacion"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection


            sqlCommand.Parameters.Add(New SqlParameter("Identificacion", mantenimiento.Identificacion))




            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then
                Do While myReader.Read()

                    Dim mantenimientoBasicoBE As New Banco.BE.Usuarios
                    mantenimientoBasicoBE.Id = CInt(myReader.GetValue(0))
                    mantenimientoBasicoBE.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoBasicoBE.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoBasicoBE.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoBasicoBE.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoBasicoBE.Perfil = CInt(myReader.GetValue(5))
                    mantenimientoBasicoBE.Estado = CInt(myReader.GetValue(6))
                    mantenimientoBasicoBE.FechaCreacion = CDate(myReader.GetValue(7))
                    lista.Add(mantenimientoBasicoBE)

                Loop

            End If

            myReader.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al listar" & Ex.ToString)
        Finally

            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try


        Return lista

    End Function

    Function FiltrarNombre(ByVal mantenimiento As Banco.BE.Usuarios) As List(Of Banco.BE.Usuarios)

        Dim sqlConnection As SqlConnection = New SqlConnection()
        Dim sqlCommand As SqlCommand = New SqlCommand()
        Dim myReader As SqlDataReader
        Dim lista As New List(Of Banco.BE.Usuarios)

        Try
            sqlConnection.ConnectionString = connectionString

            sqlConnection.Open()

            sqlCommand.CommandText = "UsuariosNombre"
            sqlCommand.CommandType = CommandType.StoredProcedure
            sqlCommand.Connection = sqlConnection


            sqlCommand.Parameters.Add(New SqlParameter("NombreCompleto", mantenimiento.NombreCompleto))




            myReader = sqlCommand.ExecuteReader()

            If myReader.HasRows Then
                Do While myReader.Read()

                    Dim mantenimientoBasicoBE As New Banco.BE.Usuarios
                    mantenimientoBasicoBE.Id = CInt(myReader.GetValue(0))
                    mantenimientoBasicoBE.NombreCompleto = myReader.GetValue(1).ToString
                    mantenimientoBasicoBE.Identificacion = myReader.GetValue(2).ToString
                    mantenimientoBasicoBE.NombreUsuario = myReader.GetValue(3).ToString
                    mantenimientoBasicoBE.Contraseña = myReader.GetValue(4).ToString
                    mantenimientoBasicoBE.Perfil = CInt(myReader.GetValue(5))
                    mantenimientoBasicoBE.Estado = CInt(myReader.GetValue(6))
                    mantenimientoBasicoBE.FechaCreacion = CDate(myReader.GetValue(7))
                    lista.Add(mantenimientoBasicoBE)

                Loop

            End If

            myReader.Close()

        Catch Ex As Exception
            Throw New Exception("Problemas al listar" & Ex.ToString)
        Finally

            If sqlConnection.State <> ConnectionState.Closed Then
                sqlConnection.Close()
            End If
        End Try


        Return lista

    End Function



End Class

